package com.itfreer.setting.ui;

import android.app.Activity;
import android.content.ComponentName;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;

import androidx.annotation.NonNull;

import com.itfreer.setting.R;
import com.itfreer.utils.AlertUtils;

// 打开手机厂商后台
public class BackManage {

    public static void allowBackground(Activity main) {
        String step = "";
        // 判断手机厂商
        if (isHuawei()) { // 华为
            step = "检测到为华为手机，操作步骤：应用启动管理 -> 找到" + main.getString(R.string.app_name) + " -> 关闭应用开关 -> 打开允许后台活动";
        } else if (isLeTV()) { // 乐视
            step = "检测到为乐视手机，操作步骤：自启动管理 -> 允许应用自启动";
        } else if (isMeizu()) { // 魅族
            step = "检测到为魅族手机，操作步骤：权限管理 -> 后台管理 -> 点击应用 -> 允许后台运行";
        } else if (isOPPO()) { // OPPO
            step = "检测到为OPPO手机，操作步骤：权限隐私 -> 自启动管理 -> 允许应用自启动";
        } else if (isSamsung()) { // 三星
            step = "检测到为三星手机，操作步骤：自动运行应用程序 -> 打开应用开关 -> 电池管理 -> 未监视的应用程序 -> 添加应用";
        } else if (isSmartisan()) { // 锤子
            step = "检测到为锤子手机，操作步骤：权限管理 -> 自启动权限管理 -> 点击应用 -> 允许被系统启动";
        } else if (isVIVO()) { // VIVO
            step = "检测到为VIVO手机，操作步骤：权限管理 -> 自启动 -> 允许应用自启动";
        } else if (isXiaomi()) { // 小米
            step = "检测到为小米手机，操作步骤：授权管理 -> 自启动管理 -> 允许应用自启动";
        } else { // 其他手机
            step = "未检测到手机厂商，请自行进入设置开启应用后台运行!";
        }
        System.out.println(step);
        showAlert(main, step);
    }

    public static void gotoManage(Activity main) {
        // 判断手机厂商
        if (isHuawei()) { // 华为
            goHuaweiSetting(main);
        } else if (isLeTV()) { // 乐视
            goLetvSetting(main);
        } else if (isMeizu()) { // 魅族
            goMeizuSetting(main);
        } else if (isOPPO()) { // OPPO
            goOPPOSetting(main);
        } else if (isSamsung()) { // 三星
            goSamsungSetting(main);
        } else if (isSmartisan()) { // 锤子
            goSmartisanSetting(main);
        } else if (isVIVO()) { // VIVO
            goVIVOSetting(main);
        } else if (isXiaomi()) { // 小米
            goXiaomiSetting(main);
        } else { // 其他手机

        }
    }

    private static void showAlert(final Activity main, String step) {
        AlertUtils.dialog(main, "系统提示", step,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // 权限设置
                    gotoManage(main);
                }
            }, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                }
            }
        );
    }

    /**
     * 跳转到指定应用的首页
     */
    private static void showActivity(@NonNull Activity main, @NonNull String packageName) {
        Intent intent = main.getPackageManager().getLaunchIntentForPackage(packageName);
        main.startActivity(intent);
    }

    /**
     * 跳转到指定应用的指定页面
     */
    private static void showActivity(@NonNull Activity main, @NonNull String packageName, @NonNull String activityDir) {
        Intent intent = new Intent();
        intent.setComponent(new ComponentName(packageName, activityDir));
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        main.startActivity(intent);
    }

    // 华为
    public static boolean isHuawei() {
        if (Build.BRAND == null) {
            return false;
        } else {
            return Build.BRAND.toLowerCase().equals("huawei") || Build.BRAND.toLowerCase().equals("honor");
        }
    }

    // 跳转华为手机管家的启动管理页 操作步骤：应用启动管理 -> 关闭应用开关 -> 打开允许自启动
    private static void goHuaweiSetting(@NonNull Activity main) {
        try {
            showActivity(main, "com.huawei.systemmanager",
                    "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity");
        } catch (Exception e) {
            showActivity(main, "com.huawei.systemmanager",
                    "com.huawei.systemmanager.optimize.bootstart.BootStartActivity");
        }
    }

    // 小米
    public static boolean isXiaomi() {
        return Build.BRAND != null && Build.BRAND.toLowerCase().equals("xiaomi");
    }

    // 跳转小米安全中心的自启动管理页面 操作步骤：授权管理 -> 自启动管理 -> 允许应用自启动
    private static void goXiaomiSetting(@NonNull Activity main) {
        showActivity(main, "com.miui.securitycenter",
                "com.miui.permcenter.autostart.AutoStartManagementActivity");
    }

    // OPPO
    public static boolean isOPPO() {
        return Build.BRAND != null && Build.BRAND.toLowerCase().equals("oppo");
    }

    // 跳转 OPPO 手机管家 操作步骤：权限隐私 -> 自启动管理 -> 允许应用自启动
    private static void goOPPOSetting(@NonNull Activity main) {
        try {
            showActivity(main, "com.coloros.phonemanager");
        } catch (Exception e1) {
            try {
                showActivity(main, "com.oppo.safe");
            } catch (Exception e2) {
                try {
                    showActivity(main, "com.coloros.oppoguardelf");
                } catch (Exception e3) {
                    showActivity(main, "com.coloros.safecenter");
                }
            }
        }
    }

    // VIVO
    public static boolean isVIVO() {
        return Build.BRAND != null && Build.BRAND.toLowerCase().equals("vivo");
    }

    // 跳转 VIVO 手机管家 操作步骤：权限管理 -> 自启动 -> 允许应用自启动
    private static void goVIVOSetting(@NonNull Activity main) {
        showActivity(main, "com.iqoo.secure");
    }

    // 魅族
    public static boolean isMeizu() {
        return Build.BRAND != null && Build.BRAND.toLowerCase().equals("meizu");
    }

    // 跳转魅族手机管家 操作步骤：权限管理 -> 后台管理 -> 点击应用 -> 允许后台运行
    private static void goMeizuSetting(@NonNull Activity main) {
        showActivity(main, "com.meizu.safe");
    }

    // 三星
    public static boolean isSamsung() {
        return Build.BRAND != null && Build.BRAND.toLowerCase().equals("samsung");
    }

    // 跳转三星智能管理器 操作步骤：自动运行应用程序 -> 打开应用开关 -> 电池管理 -> 未监视的应用程序 -> 添加应用
    private static void goSamsungSetting(@NonNull Activity main) {
        try {
            showActivity(main, "com.samsung.android.sm_cn");
        } catch (Exception e) {
            showActivity(main, "com.samsung.android.sm");
        }
    }

    // 乐视
    public static boolean isLeTV() {
        return Build.BRAND != null && Build.BRAND.toLowerCase().equals("letv");
    }

    // 跳转乐视手机管家 操作步骤：自启动管理 -> 允许应用自启动
    private static void goLetvSetting(@NonNull Activity main) {
        showActivity(main, "com.letv.android.letvsafe",
                "com.letv.android.letvsafe.AutobootManageActivity");
    }

    // 锤子
    public static boolean isSmartisan() {
        return Build.BRAND != null && Build.BRAND.toLowerCase().equals("smartisan");
    }

    // 跳转手机管理  操作步骤：权限管理 -> 自启动权限管理 -> 点击应用 -> 允许被系统启动
    private static void goSmartisanSetting(@NonNull Activity main) {
        showActivity(main, "com.smartisanos.security");
    }
}
